Resorcerer has been released in translated form in Japan, where it is the first localized resource editor for the Macintosh (you'd think Apple would have thought of that :). Many of the changes and fixes in 1.2.5 are due to this conversion to Japanese.
Installed new Best Hack Award-winning FEZ routines (see MacTech Magazine, Sept 94) to do Frame-Evading ZoomRects when opening the About Box. These are most pleasing when only one or two windows are open, but get progressively wilder for more open windows. The parameters governing the zoom style are kept in resources of type 'ZOOM', which you can delete to go back to the old style when you want. 'ZOOM' 128 is for the About Box; 'ZOOM' 129 is for the Dialog editor item info windows.
Updated the About Box to reflect our new address and phone pointers, and to make it easier to localize.
There is now a bit in the preferences file (no interface to it) that turns off Resorcerer's use of typographic quotes in various parts of the program that display strings, such as the Resources List (resource names), titles of windows (file names), etc. This is for the benefit of localizing the Japanese (or other foreign) version automatically.
The Resorcerer WDEF no longer uses a cross-hatched background in the title drag bar on color screens with 4 bits or less per pixel. Modal dialogs and alerts (in 4 bit color or less) still use a slightly different border for the benefit of the Dialog Editor.
The list of ever-smaller fonts that Resorcerer’s WDEF uses to display long titles in narrow windows is now kept in a private resource (‘RFN#’ = “Reduced Font List”) for the benefit of localization and customization. To maintain the old behavior, set the first two bytes of this resource to 0. Eventually this may be made into a visible user-settable preference.
Resorcerer now presets the Standard Open dialog to the same folder as the last opened file, so that when you drag and drop a file, or open a favorite file, doing a Save As, or opening a related file, doesn't mean having to search all over the file tree from Resorcerer's startup directory. This includes files opened from the Favorite Files menu.
The StringList, TypeList, Template, and Data Editors now support searching list cells by typing "at them". The TAB key is Search Again for the last typed search string. This means that you can find a string or template field by simply typing some portion of it (it doesn't have to be the initial portion). This works similarly to how the File Window has worked in recent versions. The timeouts for accumulating new search string characters (as opposed to beginning a new search string) and for tabbing are now kept in the 'TOUT' resource, where the defaults are 1.5 and 3 seconds. The File Window, which already supported searching by typing, now listens to the new timout values in the resource. The searching is done brute force, so it's a lot slower than it could be; we'll wait for your complaints before spending the time to make it more efficient. Searching can be disabled easily in all these editors if it's a problem (no interface to this, though, so you'll have to call).
Template News
-------------
A new template field type, 'FXYZ', has been defined for the benefit of various color-related data structures. The field is a 2-byte 16-bit fixed point number whose high order bit is a sign bit, and whose low order 15 bits encode a number less than one (actually, the range for these numbers is from -1.0 up to but not including +1.0). The ColorSync 'prof' template has been updated to use this new field type.
A new template field type, 'DBDB', has been defined for PowerPC "double double"s. This is a floating point field type that is 16 bytes long, and encodes 2 8-byte "short double"s. A "double double"'s value is the sum of the two. The values are presented to you separated by a comma.
A new template field type, 'CLUT', has been defined which lets you parse an entire color lookup table into one Data Editor field, currently only openable as hex.
Three new template field types, 'SCPC' (Script Code), 'RGNC' (Region Code), and 'LNGC' (Language Code) have been defined to help save lots of space in certain templates. Each of these field types declares a two-byte decimal word (e.g. 'DWRD'), but you don't have to follow them with the usual long 'CASE' list everywhere. The appropriate 'CASE' list is automatically inserted after the field. The 'CASE' lists for the three field types are kept in Resorcerer's own resources of type 'CASE', which are synonyms of 'TMPL's. Most of the Apple-related templates in the "Resorcerer® Templates" folder that can benefit from these new types have been changed to do so.
Added a new Code Fragment Template file for the PowerPC 'cfrg' resource.
Updated the Installer Templates file to reflect new resources and formats in Installer 4.0.3 resources. This includes all new gestalt machine types as of October 94.
Data Editor News
---------------
When opening a resource with a ResEdit template that includes fixed-length Pascal string fields (Pnmm, where $nmm is odd), the Data Editor now offers you the ability to temporarily convert the ResEdit-style fields to Resorcerer-style fields (Pnmm, where $nmm is 1 more (even)), so that you can continue to open the resource with the old template. The check for ResEdit-style fixed-length Pascal string fields has been extended to include all odd-length field types, rather than ones just below powers of two. Before Resorcerer uses a TMPL resource to parse a data structure, it converts the TMPL into an internal form to parse the data. These internal forms are cached, so the next time you open the same resource, you won't be asked again about the ResEdit->Resorcerer conversion. However, Resorcerer often tosses the internal cached form for all sorts of hidden internal reasons, which means that it may ask you again some time later.
The Data Editor now supports the ability to cut, copy, clear, and paste multiple repeated items. The selection must consist solely of cells containing item divider lines all at the same nesting level in a single list. The set of selected items does not have to be contiguous.
The Select All command now selects all repeated item divider lines if exactly one of them was selected prior to choosing Select All. This then enables the editor to Cut/Copy/Clear the entire list using the selection criteria mentioned in the previous paragraph.
The data parser now reports the template field index in its error message for any key whose data doesn't match any cases.
Icon Editor News
---------------
Changed the 'SHOW'ers for icon families to suppress the display of related family icons when the "Include related resources in selections" preference is turned off.
The Color Pixel editors no long swap the Dropper tool in when you hold the Option key down and the Text tool is the current tool. This lets you enter Option-characters once again.
Dialog Editor News
-----------------
In the Dialog Editor, when you place the mouse over any item whose width or height is 2 pixels or less, the arrow cursor changes slightly (it flips orientation) to indicate when it is possible to click in order to drag but not grow the item. This makes it a lot easier to manipulate thin 1-pixel items, like User items or Picture items. The cursor change does *not* take effect if the mouse is over the item's grow handles, since these are always visible, non-overlapping, and large enough to see unambiguously. Thus, when the cursor changes, you know you won't be changing the thin or narrow item's size by clicking and dragging.
The Align Using submenu in the Dialog Editor now supports distributing the selection of items either horizontally or vertically, without changing any item sizes. This is particularly useful for arranging a column of checkboxes or radiobuttons vertically. The outermost selected items are used as the bounds of the distribution.
The Dialog Editor now does a somewhat better job of presetting the resource ID for new Control, Icon, and Picture items to something more reasonable than 0. It now looks for the first free ID above 128.
The Dialog Item Info dialogs now support Undo.
The Starter Code generator now supports the MixedMode routine descriptor stuff for ModalDialog filterProc's as found in the new universal headers. Also, the generated code has been cleaned up for the benefit of stricter compilation settings.
The Choose ID button for browsing icons in the Dialog (and Menu) Editor now brings up a dialog that also shows 'cicn' resources.
The Dialog Editor's Use Best Size command now shrinks static and edit text items with only 1 line of text in them horizontally as well as vertically. If the text has a carriage return in it, or has been narrowed so that it word-wraps onto more than one line, the item bounds are adjusted vertically only, which is how it has always worked up to now.
The Dialog Editor is now more robust in the face of corrupted or compressed 'DITL' data. It now complains if a dialog looks like it has more than 1000, or less than 0, items.
Bug Fixes
---------
Fixed a Change All... bug that would incorrectly set the resource IDs of minor resources to the same ID when the final range of resource numbers overlapped the original range of resource numbers. Also added a progress dialog if a lot of resources are being renumbered.
Fixed a nasty intermittent bug that would cause a crash/hang during Finder Dragon Droppings onto Resorcerer when there was data in the scrap. A truly hideous bug having to do with inappropriately and indefinitely recursive activate events, progress bars, etc. (don't ask :).
Deleting the data fork resource and then changing an existing resource's type into the data fork type now does a better job replacing the data fork with the old resource data.
Fixed an uninitialized variable bug in the Data Editor that would randomly declare all memory gone during a new item insert.
Fixed a bug that caused window colors to go crazy (and then worse) when opening the pseudo "System ROM Resources" file. This bug mostly showed up on PowerBooks, but would eventually have caused trouble on other Mac varieties.
Copying a multi-bit icon image to a 1-bit icon image while working on a monitor with 16 or more bits/pixel now works.
The 'ppat' and 'cicn' editors now deal better with resources whose pixmap's have extra bytes per row for alignment reasons.
Fixed an interface bug in the Control Editor for custom CDEF's with resource ID's greater than 2047. The editor was warning about negative CDEF resource IDs. This should warm the hearts of XVT users.
Occasionally, when comparing two identical files, Resorcerer would report that two resources would be different when in fact they were the same. This would only occur when your preference for scanning resource maps directly was turned off. When Resorcerer uses the Resource Manager to retrieve resources and their info during the initial file open, it was recording the value that GetResInfo returned and thereafter using it. However, GetResInfo delivers a short, but the attributes are only kept in a byte. It turns out that the Resource Manager occasionally delivers garbage in the upper half of GetResInfo's return value, which is what was causing Resorcerer to find a difference. This has been fixed in Resorcerer by defensively masking out all unused bits in the attribute values Resorcerer initially records.
The Dialog Editor no longer incorrectly undoes an item center just after opening a dialog and vertically centering an already horizontally-centered item.
Fixed two bugs in the QuickTime compressed opcode of the 'PICT' template and filter. It now correctly parses extra data past the end of the ImageDescription, which is typically an immediate 'clut'. The other bug had to do with rearranging the alignment byte at the end of the opcode so that its storage is included in the opcode size count. So much for opcode consistency.
Rebuilt the 'PICT' SHOW code resource so that DrawPicture would be able to find any 'clut' resource that QuickTime might be looking for to use with a compressed 'PICT'. Did the same thing in the Picture Editor.
Fixed a bug in the Data Editor regarding cutting and pasting list items, particularly recursive ones.
Fixed an obscure but nasty bug that caused a crash when trying to run a template that refers to a filter that can't be found.
Fixed a long-standing bug having to do with File Window scroll bars occasionally not updating properly.
Fixed a bug when derezing 'STR#'s whose strings contained single quotes that were being escaped incorrectly (inescaped correctly?).
Fixed a bug introduced in 1.2.4 that mistakenly kept Resorcerer from being able to open files with null creators and types in the FinderInfo fields, which tends to happen for preferences files in apps that aren't taking care to set the Type/Creator codes like they should.
Added a routine for drawing popup user items better (with the triangle on the right) to the Dialog Editor’s Starter Code output.
Fixed a bug in the Hex/Code editor that could cause a latent crash when opening large resources or data forks.
The 68K code disassembler now (once again) properly disassembles blocks of code ending with a JMP(A0) instruction, instead of calling it data.
The text tool in the color pixel editors now deletes back over the proper number of bytes in a multi-byte font (e.g. Kanji).
Fixed a variety of cosmetic bugs in Resorcerer's custom WDEF. It now supports shaded windows on grayscale screens (16 or more shades), and no longer does wierd things in the title bar when sharing two separate monitors of different depths.
Long ago, the original New Dialog Item dialog in the Dialog Editor contained only 1 text item, so the Tab key could be used to select the item type from the set of radio buttons. However, another text item (the insertion item number) was added, but the old Tab code was still in effect. This goes against the interface standards, and has been fixed. If you still need to traverse the radio buttons from the keyboard, you can use the Up/Left arrow keys, or the Down/Right arrow keys to do so.
The insertion fields (the ones that start with a '+' sign) in templates now support inserting any non-zero or non-empty default values (like they were supposed to originally - just add a CASE field after it defining the value to use for the newly inserted field). Sounds obscure, but we fixed this bug in a few hours notice, FedEx'ed a beta copy to the developer who reported it, and consequently saved his project (automatically converting an internal opcode field in over 3000 'PICT' resources) from extinction.
Fixed a counting bug that caused the Saving file progress box to hit the end too soon under some circumstances.
Fixed an obscure bug that was causing spurious "Unrecognized Handle" alerts from Resorcerer's internal Handle tracking code. This would happen after Cutting a resource, saving the file, cutting another resource, and saving the file; and in other situations. The problem arose because Apple's documentation on RemoveResource is not forthcoming on whether the Handle passed to it remains a Resource Manager-recognized handle or not (it's not). The handle's data can stay around until the file is closed.
Fixed a bug in the 'prof' template filter that was incorrectly setting the offsetToCustomData field by 2 bytes (it was forgetting about the script code field).
Fixed some problems in the QuickDraw GX Templates, particularly the 'xdtl' template.
The Template Editor's field window's popup menu (the one with all template field types in it) has been updated to include a few types that were left out inadvertantly in 1.2.4. These types are 'AL08' (align on 8 byte wide boundary), 'AL16' (align on 16 byte boundary), and 'CLUT' (parse an entire clut as a hex dump so you can cut and paste color tables). The 'CLUT' field is not documented in the manual.
Fixed a problem in the Data Editor that could cause floating point values to change unexpectedly by small rounding errors due to unnecessary conversions to and from the text representation.
Set the direct-scanning high-water mark for the System version to 7.9. Resorcerer won't put up any alert worrying about direct scanning of resource maps until the first system version after 7.9. This assumes that Apple has no plans to change the format of resource maps for any systems in the near future. Too many users have been scared by this alert into unnecessarily turning direct scanning off.
If a newly opened (non-favorite) file has only one resource type in it, Resorcerer will set the file window to display those resources. Otherwise, if more than one type, the window just shows you the Types List. Unfortunately, if you set Resorcerer to always show the data fork "resource", the above nicety wouldn't work, since the code would see two resources. Now it checks to see if one of the resources is the data fork, and opens all resources of the other type if there's only one other type.
Fixed a few minor Dialog Editor graphical and updating bugs. Fit to Visible Items now takes any Okay button's extra border into account. Item numbers don't leave holes in non-white backgrounds. Changing item resource IDs no longer leaves combinations of imagery from both resources.
Fixed an error in the 'open' template, and added a new template for 'kind' resources. These are Easy Open resources.
The Escape key and CMD-period keys now close editor sub-windows without asking the editor to close the resource set as well.